#pragma once
#include "Flowfield.h"
#include "WallGeometry.h"
#include "Cphase.h"
#include "Injection.h"
#include "PLinearMotion.h"
#include "WallImpingement.h"
#include "WallRebound.h"
#include "TimeStepSize.h"
#include "Slip.h"
#include "PLinearMotion.h"
#include "MotionIntegration.h"
#include <cassert>
#include <vector>
#include <memory>

using namespace std;

class ParticleTracking
{
public:
	ParticleTracking()=default;
	ParticleTracking(const shared_ptr<CaseSettings> caseSettings0, const shared_ptr<ModelSettings>modelSettings0,
		const shared_ptr<Constants>constant0, const shared_ptr<Flowfield>flowfield0, 
		const shared_ptr<WallGeometry>wallGeometry0);
	int totalP; // total particle number
	shared_ptr<vector<Particle>> pAll_s, pAll_end; // _s start point; _end end point;
	shared_ptr<vector<vector<Particle>>> PAll_allTime; // _allTime all particle data

};

